package sigec_ead.controle.usuario;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import sigec_ead.controle.ConexaoJDBC;
import sigec_ead.modelo.usuario.Funcao;
import sigec_ead.modelo.usuario.Usuario;

/**
 *
 * @author Joeldson
 */
public class UsuarioDAO {
    private FuncaoDAO funcaoDao;
    private Usuario usuario;

    //Cadastrando usuario...
    public void incluirUsuario(Usuario usuario) throws SQLException {
  
        PreparedStatement ps = null;
        Connection con = null;

        String sql = "INSERT INTO usuario (nome,email,idfuncao,isadmin) VALUES(?,?,?,?)";
        try {
            con = ConexaoJDBC.getConexao();
            ps = con.prepareStatement(sql);
            ps.setString(1, usuario.getNome());
            ps.setString(2, usuario.getEmail());
            ps.setInt(3,usuario.getFuncao().getId());
            ps.setBoolean(4, usuario.isIsAdmin());
            ps.execute();
        } finally {
            JOptionPane.showMessageDialog(null, "Usuario Cadastrado com Sucesso","SUCESSO", JOptionPane.PLAIN_MESSAGE);
            ps.close();
            con.close();
        }
    }

     // Consultando usuario...
    public Usuario consultarUsuario(int id) throws SQLException {

        PreparedStatement ps = null;
        Connection con = null;
        String sql = "SELECT * FROM usuario WHERE id=?";
        try {
            con = ConexaoJDBC.getConexao();
            ps = con.prepareStatement(sql);
            ps.setInt(1, id);
            ResultSet rs = ps.executeQuery();

            funcaoDao = new FuncaoDAO();
            usuario = new Usuario();
            if (rs.next()) {
                usuario.setId(rs.getInt("id"));
                usuario.setNome(rs.getString("nome"));
                usuario.setEmail(rs.getString("email"));
                usuario.setFuncao(funcaoDao.consultarFuncao(rs.getInt("idfuncao")));
                usuario.setIsAdmin(rs.getBoolean("isadmin"));
                return usuario;
            } else {
                return null;
            }
        } finally {
            ps.close();
            con.close();
        }
    }

    // Consultando usuario...
    public Usuario consultarUsuario2(String nome, String email) throws SQLException {

        PreparedStatement ps = null;
        Connection con = null;
        String sql = "SELECT * FROM usuario WHERE nome=? AND email=?";
        try {
            con = ConexaoJDBC.getConexao();
            ps = con.prepareStatement(sql);
            ps.setString(1, nome);
            ps.setString(2, email);
            ResultSet rs = ps.executeQuery();

            funcaoDao = new FuncaoDAO();
            usuario = new Usuario();
            if (rs.next()) {
                usuario.setId(rs.getInt("id"));
                usuario.setNome(rs.getString("nome"));
                usuario.setEmail(rs.getString("email"));
                usuario.setFuncao(funcaoDao.consultarFuncao(rs.getInt("idfuncao")));
                usuario.setIsAdmin(rs.getBoolean("isadmin"));
                return usuario;
            } else {
                return null;
            }
        } finally {
            ps.close();
            con.close();
        }
    }
}
